/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.edu.flf.audioteca.dao.impl;

import br.edu.flf.audioteca.dao.IEntidadeLeituraDAO;
import br.edu.flf.audioteca.dao.entitymanager.EntityManagerController;
import br.edu.flf.audioteca.dao.exceptions.JPAException;
import java.io.Serializable;
import java.util.List;

/**
 *
 * @author Nathan Azevedo
 */
public class EntidadeLeituraDAO extends EntityManagerController implements IEntidadeLeituraDAO {

    public final <S extends Serializable> S buscar(
            final Class<S> classeDaEntidade, final Serializable id)
            throws JPAException {
        try {
            return getEntityManager().find(classeDaEntidade, id);
        } catch (final RuntimeException e) {
            throw new JPAException(e);
        }
    }

    @SuppressWarnings("unchecked")
    public final <S extends Serializable> List<S> buscarTodos(
            final Class<S> classeDaEntidade) throws JPAException {
        final String consulta = "select e from " + classeDaEntidade.getSimpleName() + " e";
        List<S> resultado = null;
        try {
            resultado = getEntityManager().createQuery(consulta).getResultList();
        } catch (final RuntimeException e) {
            e.printStackTrace();
            throw new JPAException(e);
        }
        return resultado;
    }
}
